数组 移除元素

数组 移除元素

👹

  • leetcode 27题
  • 考察数组的底层
  • 双指针 O(n)

给你一个数组 list 和一个值 var,你需要 原地 移除所有数值等于 var 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

def Code():
list = [1,2,3,4,3,3,3,3,5,6,7,3]
var = 3
size = len(list)
slow = 0
fast = 0

#快指针在for循环内
while fast< size:
if list[fast] != var :
list[slow] = list[fast]
slow+=1
fast+=1
print(list[0:slow])
return slow
print(Code())

Code_-_Insiders_VS4Re4fzzY.png

定义的慢指针覆盖了原列表的元素
不过列表容量仍是原来的
超出该下标有一些诡异的数字出现
使用list[0:slow]来获取列表正常的前部分

作者

发布于

2023-02-28

更新于

2023-06-13

许可协议